package com.example.demo.zaqizabatest;


import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;

/**
 * ******************************************************
 *
 * @author liugh9
 * @version 1.0
 * @classname ExcelAnalyze
 * @description
 * @date 2023/02/14 9:50
 * <p>
 * ******************************************************
 */
public class ExcelAnalyze {

    private static final String zhSqlPath = "C:\\Users\\liuguihua\\Desktop\\zh-sql.txt";
    private static final String enSqlPath = "C:\\Users\\liuguihua\\Desktop\\en-sql.txt";
    private static final String enumSqlPath = "C:\\Users\\liuguihua\\Desktop\\enum-sql.txt";
    private static final String zhAccessPath = "C:\\Users\\liuguihua\\Desktop\\zh-access.txt";
    private static final String enAccessPath = "C:\\Users\\liuguihua\\Desktop\\en-access.txt";
    private static final String enumAccessPath = "C:\\Users\\liuguihua\\Desktop\\enum-access.txt";
    private static final Map<String, List<String>> zhMap = new HashMap<>();
    private static final Map<String, List<String>> enMap = new HashMap<>();
    private static final Map<String, List<String>> enumMap = new HashMap<>();

    public static void main(String[] args) throws IOException {



        String excelFilePath = "C:\\Users\\liuguihua\\Desktop\\test.xlsx";
        readExcel(excelFilePath);

        File zhSqlFile = new File(zhSqlPath);
        File enSqlFile = new File(enSqlPath);
        File enumSqlFile = new File(enumSqlPath);
        File zhAccessFile = new File(zhAccessPath);
        File enAccessFile = new File(enAccessPath);
        File enumAccessFile = new File(enumAccessPath);
        if (!zhSqlFile.exists()) {
            zhSqlFile.createNewFile();
        }
        if (!enSqlFile.exists()) {
            enSqlFile.createNewFile();
        }
        if (!enumSqlFile.exists()) {
            enumSqlFile.createNewFile();
        }
        if (!zhAccessFile.exists()) {
            zhAccessFile.createNewFile();
        }
        if (!enAccessFile.exists()) {
            enAccessFile.createNewFile();
        }
        if (!enumAccessFile.exists()) {
            enumAccessFile.createNewFile();
        }



        FileUtil.writeLines(zhMap.get("sql"), zhSqlFile, "UTF-8");
        FileUtil.writeLines(enMap.get("sql"), enSqlFile, "UTF-8");
        FileUtil.writeLines(enumMap.get("sql"), enumSqlFile, "UTF-8");

        FileUtil.writeLines(zhMap.get("access"), zhAccessFile, "UTF-8");
        FileUtil.writeLines(enMap.get("access"), enAccessFile, "UTF-8");
        FileUtil.writeLines(enumMap.get("access"), enumAccessFile, "UTF-8");
    }



    public static void readExcel(String path) {
        int code = 20000;
        try {

            // 获取文件输入流
            InputStream inputStream = new FileInputStream(path);
            // 定义一个org.apache.poi.ss.usermodel.Workbook的变量
            // 默认xlsx
            Workbook workbook = new XSSFWorkbook(inputStream);
            for (int index = 0; index < 2; index++) {
                List<String> zhList = new ArrayList<>();
                List<String> enList = new ArrayList<>();
                List<String> enumList = new ArrayList<>();
                // 获取第一张表
                Sheet sheet = workbook.getSheetAt(index);
                String sheetName = sheet.getSheetName();
                zhMap.put(sheetName, zhList);
                enMap.put(sheetName, enList);
                enumMap.put(sheetName, enumList);
                String keyPref = "";
                if ("sql".equals(sheetName)) {
                    zhList.add("################################### 执行计划分析（SQL诊断） AntDB-M 4.2 start ####################################################");
                    enList.add("################################### 执行计划分析（SQL诊断） AntDB-M 4.2 start ####################################################");
                    enumList.add("// ################################### 执行计划分析（SQL诊断） AntDB-M 4.2 start ####################################################");
                    keyPref = "sql.analyze.";
                } else {
                    zhList.add("################################### 集群接入 AntDB-M 4.2 start ####################################################");
                    enList.add("################################### 集群接入 AntDB-M 4.2 start ####################################################");
                    enumList.add("// ################################### 集群接入 AntDB-M 4.2 start ####################################################");
                    keyPref = "cluster.access.";
                }
                // sheet.getPhysicalNumberOfRows()获取总的行数
                // 循环读取每一行
                int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
                // 从第二行开始读
                for (int i = 1; i < physicalNumberOfRows; i++) {
                    // 循环读取每一个格
                    Row row = sheet.getRow(i);
                    // row.getPhysicalNumberOfCells()获取总的列数
//                int physicalNumberOfCells = row.getPhysicalNumberOfCells();

                    // 当前测试只有三列
                    Cell cellKey = row.getCell(0);
                    cellKey.setCellType(Cell.CELL_TYPE_STRING);
                    String key = cellKey.getStringCellValue();
                    Cell cellZh = row.getCell(1);
                    cellZh.setCellType(Cell.CELL_TYPE_STRING);
                    String zh = cellZh.getStringCellValue();
                    Cell cellEn = row.getCell(2);
                    cellEn.setCellType(Cell.CELL_TYPE_STRING);
                    String en = cellEn.getStringCellValue();
                    zhList.add(keyPref + key + "=" + zh);
                    enList.add(keyPref + key + "=" + en);
                    String enumKey = (keyPref + key).replaceAll("\\.", "_").toUpperCase();
                    enumList.add(enumKey + "(" + code++ + ", \"" + keyPref + key + "\"),");
                }

                if ("sql".equals(sheetName)) {
                    zhList.add("################################### 执行计划分析（SQL诊断） AntDB-M 4.2 end ####################################################");
                    enList.add("################################### 执行计划分析（SQL诊断） AntDB-M 4.2 end ####################################################");
                    enumList.add("// ################################### 执行计划分析（SQL诊断） AntDB-M 4.2 end ####################################################");
                } else {
                    zhList.add("################################### 集群接入 AntDB-M 4.2 end ####################################################");
                    enList.add("################################### 集群接入 AntDB-M 4.2 end ####################################################");
                    enumList.add("// ################################### 集群接入 AntDB-M 4.2 end ####################################################");
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}
